#include <memory>
#include <iostream>

#include <odb/database.hxx>
#include <odb/transaction.hxx>

#include "database.hxx"

#include "artikel.hxx"
#include "artikel-odb.hxx"

using namespace std;
using namespace odb::core;

int main (int argc, char* argv[])
{
	try {

		auto_ptr<database> db (create_database (argc, argv));

		//Variablen für Rückgabewert nach Insert
		unsigned long buch_id, cd_id;

		/*
			Es folgt ein Test zum hinzufügen von Objekten in die Datenbank
		*/

		//Die Artikel Entities. -> artikel(String name)
		artikel insert1("Flammenbrut", "Ein tolles Buch!");
		artikel insert2("Tokio Hotel", "Wannabee Sänger");

		//Transaktion starten
		transaction t(db->begin());

		//Objekt in der Datenbank persistieren
		buch_id = db->persist(insert1);
		cd_id = db->persist(insert2);

		//Commit in der Datenbank
		t.commit();

		//Na dann mal gucken, was wir da zurückbekommen
		cout << "Buch: " << buch_id << endl;
		cout << "CD-ROM: " << cd_id << endl;

	}
	catch (const odb::exception& e)
	{
		cerr << e.what () << endl;
		return 1;
	}	

}
